@echo off
chcp 65001 >nul
echo ========================================
echo   MQTT项目 - Windows防火墙配置
echo ========================================
echo.

:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo [错误] 请以管理员权限运行此脚本
    echo 右键点击此文件，选择"以管理员身份运行"
    echo.
    pause
    exit /b 1
)

echo [√] 管理员权限确认
echo.

echo 准备配置防火墙规则：
echo   - 端口 3002: MQTT Web应用HTTP服务
echo   - 端口 8081: MQTT WebSocket服务
echo   - 端口 3307: MySQL数据库服务
echo.

set /p confirm="是否继续? (Y/N): "
if /i not "%confirm%"=="Y" (
    echo 已取消配置
    pause
    exit /b 0
)

echo.
echo 开始配置防火墙规则...
echo.

:: 删除旧规则（如果存在）
netsh advfirewall firewall delete rule name="MQTT-HTTP" >nul 2>&1
netsh advfirewall firewall delete rule name="MQTT-WebSocket" >nul 2>&1
netsh advfirewall firewall delete rule name="MQTT-MySQL" >nul 2>&1

:: 添加新规则
echo [1/3] 配置端口 3002 (HTTP)...
netsh advfirewall firewall add rule name="MQTT-HTTP" dir=in action=allow protocol=TCP localport=3002
if %errorlevel% equ 0 (
    echo [√] 端口 3002 配置成功
) else (
    echo [×] 端口 3002 配置失败
)

echo.
echo [2/3] 配置端口 8081 (WebSocket)...
netsh advfirewall firewall add rule name="MQTT-WebSocket" dir=in action=allow protocol=TCP localport=8081
if %errorlevel% equ 0 (
    echo [√] 端口 8081 配置成功
) else (
    echo [×] 端口 8081 配置失败
)

echo.
echo [3/3] 配置端口 3307 (MySQL)...
netsh advfirewall firewall add rule name="MQTT-MySQL" dir=in action=allow protocol=TCP localport=3307
if %errorlevel% equ 0 (
    echo [√] 端口 3307 配置成功
) else (
    echo [×] 端口 3307 配置失败
)

echo.
echo ========================================
echo   配置完成
echo ========================================
echo.

echo 查看已配置的规则：
netsh advfirewall firewall show rule name="MQTT-HTTP"
netsh advfirewall firewall show rule name="MQTT-WebSocket"
netsh advfirewall firewall show rule name="MQTT-MySQL"

echo.
echo 提示：
echo 1. 防火墙规则已配置，但还需要在阿里云控制台配置安全组
echo 2. 访问地址: http://8.149.243.80:3002
echo 3. 如需移除规则，请运行: configure-firewall-remove.cmd
echo.
pause
